package com.gomtel.smartdevice.global;

import android.graphics.Bitmap;

import com.gomtel.smartdevice.R;
import com.gomtel.smartdevice.bean.ToolsContentBean;
import com.gomtel.smartdevice.bean.UserContent;
import com.gomtel.smartdevice.moudle.DataManager;
import com.gomtel.smartdevice.moudle.db.entity.BdDataInfo;
import com.gomtel.smartdevice.moudle.db.entity.PathLengthContentInfo;
import com.gomtel.smartdevice.moudle.db.entity.PathLengthInfo;
import com.gomtel.smartdevice.moudle.db.entity.SignsOfDataInfo;
import com.gomtel.smartdevice.moudle.db.entity.StepCountContentInfo;
import com.gomtel.smartdevice.moudle.db.entity.StepCountInfo;
import com.gomtel.smartdevice.utils.LogUtil;
import com.gomtel.smartdevice.utils.StringAndBitmap;
import com.gomtel.smartdevice.widget.CalenderUtilsClass;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2018/5/15 0015.
 * 数据更新处理
 */

public class DataClass {
    public static StringAndBitmap mStringAndBitmap = new StringAndBitmap();
    public static DataManager dataManager;
    public static String CacheFile = "";
    public static int standardMax = 300; //记步标准值
    public static int standardLineMax = 300; //记步标准值
    public static float standardScale = 0.75f; //换算值

    public static String FirmwareVersion = ""; //固件版本
    public static String Battery = ""; //电池当前蓄电百分比
    public static int TotalStep = 0; //当前时间总的计步
    public static int TotalCalories = 0; //当前总的卡路里消耗
    public static String CurrentBP = "128/66mmHg"; //当前血压

    public static int CurrentTotalStep = 0; //当前时间的计步
    public static int CurrentTotalCalories = 0; //当前的卡路里消耗

    public static boolean Daily = true;
    public static boolean Sedentary = true;
    public static boolean WearingLoose = true;
    public static boolean PhoneRang = true;
    public static boolean onlineStatus = false;
    public static boolean isCalibration = false;

    private ArrayList<Integer> RecentlyTimeList = new ArrayList<>();
    private ArrayList<ToolsContentBean> toolsContentBeanArrayList = new ArrayList<>();
    private ArrayList<Integer> urlList = new ArrayList<>();

    public DataClass() {
    }

    public DataClass(DataManager dataManager) {
        this.dataManager = dataManager;
    }


    //需要手表提供的相关信息来刷新对应的content数据
    public ArrayList<ToolsContentBean> upDataToolsContent(boolean onlineStatus) {
        toolsContentBeanArrayList.clear();
        WatchApplication instance = WatchApplication.getInstance();
        if (onlineStatus) {
            List<BdDataInfo> bdDataInfos = dataManager.queryBdDataInfo(UserContent.UserName);
            if (bdDataInfos != null && bdDataInfos.size() > 0) {
                CurrentBP = bdDataInfos.get(bdDataInfos.size() - 1).getPvhMmHg() + "/" +
                        bdDataInfos.get(bdDataInfos.size() - 1).getLdoMmHg() + "(mmHg)";
            }
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.BP), 2, ""));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.HeartRate), 4, ""));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.ECG), 1, ""));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.feel_the_pulse), 3, ""));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.monitoring_of_saliva), 5, ""));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.pedometer), 0, ""));
        } else {
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.BP), 2, "未连接"));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.HeartRate), 4, "未连接"));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.ECG), 1, "未连接"));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.monitoring_of_saliva), 5, "未连接"));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.feel_the_pulse), 3, "未连接"));
            toolsContentBeanArrayList.add(new ToolsContentBean(instance.getString(R.string.pedometer), 0, "未连接"));
        }
        return toolsContentBeanArrayList;
    }


    public ArrayList<Integer> getBannerList() {
//      slide_show.addImageUrl("http://e.hiphotos.baidu.com/image/pic/item/d0c8a786c9177f3eeb8bedb57ccf3bc79e3d56ce.jpg");
        urlList.add(R.drawable.banner1);
        urlList.add(R.drawable.banner2);
        urlList.add(R.drawable.banner3);
        return urlList;
    }

    //初始化体征信息
    public void InitSignsOfDataInfo(String userName, String nickName, String sex, String birthday, int height, int weight, int brachium, int stepCountStandard, int caloryStandard, int pvhMmHgStandard, int ldoMmHgStandard, Bitmap bitmap) {
        SignsOfDataInfo signsOfDataInfo = dataManager.querySignsOfDataInfo(userName);
        if (signsOfDataInfo != null) {
            dataManager.UpDataSignsOfDataInfo(new SignsOfDataInfo(signsOfDataInfo.getId(), userName, mStringAndBitmap.bitmapToString(bitmap), nickName, sex, birthday, height, weight, brachium, stepCountStandard, caloryStandard, pvhMmHgStandard, ldoMmHgStandard));
        } else {
            dataManager.insertSignsOfDataInfo(new SignsOfDataInfo(userName, mStringAndBitmap.bitmapToString(bitmap), nickName, sex, birthday, height, weight, brachium, stepCountStandard, caloryStandard, pvhMmHgStandard, ldoMmHgStandard));
        }
    }

    private int[] mDataYs = new int[]{90, 230, 140, 70, 80, 90, 200, 13, 28, 89, 38, 66, 148, 199, 147, 264, 300, 302, 420, 123, 166, 160, 80, 90};
    private int[] mDataLine = new int[]{90, 230, 140, 70, 80, 90, 200, 13, 28, 89, 38, 66, 148, 199, 147, 264, 300, 302, 420, 123, 166, 160, 80, 90};

    //模拟数据
    public int[] StepCountInitDb() {
        int StepCount[] = new int[24];
        String currentDay;
        currentDay = "2018-5-28";
        for (int i = 0; i < 24; i++) {
            dataManager.insertStepCountContentInfo(new StepCountContentInfo(currentDay + "-" + i, currentDay, mDataYs[i]));
        }
        List<StepCountContentInfo> stepCountContentInfos = dataManager.queryStepCountContentInfo(currentDay);
        for (int i = 0; i < stepCountContentInfos.size(); i++) {
            StepCountContentInfo stepCountContentInfo = stepCountContentInfos.get(i);
            int currentcount = stepCountContentInfo.getCurrentcount();
            StepCount[i] = currentcount;

        }
        return StepCount;
    }

    //由于设备不能区分小时制计步，需要过滤当前计步数量
    public int[] filtrationStepCount(int currentStepCount) {
        int StepCount = 0;
        int integer = DayAllStep(CalenderUtilsClass.getCurrentDay(false));
        LogUtil.e("filtrationStepCount", "integer : " + integer);
        if (integer < currentStepCount)
            StepCount = currentStepCount - integer;
        int[] stepCountDb = getStepCountDb(StepCount);
        LogUtil.e("filtrationStepCount", "StepCount : " + StepCount);
        return stepCountDb;
    }

    public int[] filtrationPathLength(int currentPathLength) {
        int PathLength = 0;
        int integer = DayAllLength(CalenderUtilsClass.getCurrentDay(false));
        if (integer < currentPathLength)
            PathLength = currentPathLength - integer;
        int[] pathLengthDb = getPathLengthDb(PathLength);
        LogUtil.e("filtrationPathLength", "PathLength : " + PathLength);
        return pathLengthDb;
    }

    //获取当天计步数据(插入/更新/初始化)            //TODO 每日计步数据接入入口
    public int[] getStepCountDb(int currentStepCount) {
        int StepCount[] = new int[24];
        String currentDay = CalenderUtilsClass.getCurrentDay(false);
        List<StepCountContentInfo> stepCountContentInfos = dataManager.queryStepCountContentInfo(currentDay);
        if (stepCountContentInfos != null && stepCountContentInfos.size() > 0) {
            int currentcount = 0;
            for (int i = 0; i < stepCountContentInfos.size(); i++) {
                if (CalenderUtilsClass.getCurrentHour() == i) {
                    if (stepCountContentInfos.get(i).getCurrentcount() > 0) {
                        if (currentStepCount > 0) {
                            currentcount = currentStepCount + stepCountContentInfos.get(i).getCurrentcount();
                        } else {
                            currentcount = stepCountContentInfos.get(i).getCurrentcount();
                        }
                    } else {
                        currentcount = currentStepCount;
                    }
                    LogUtil.e("getStepCountDb", "currentcount : " + currentcount);
                    dataManager.UpDataStepCountContentInfo(new StepCountContentInfo(stepCountContentInfos.get(i).getId(), stepCountContentInfos.get(i).getCurrentTime(), stepCountContentInfos.get(i).getData(), currentcount));
                } else {
                    currentcount = stepCountContentInfos.get(i).getCurrentcount();
                }
                StepCount[i] = currentcount;
            }
        } else {
            for (int i = 0; i < 24; i++) {
                if (CalenderUtilsClass.getCurrentHour() == i) {
                    dataManager.insertStepCountContentInfo(new StepCountContentInfo(new StringBuffer().append(currentDay).append("-").append(i).toString(), currentDay, currentStepCount));
                } else {
                    dataManager.insertStepCountContentInfo(new StepCountContentInfo(new StringBuffer().append(currentDay).append("-").append(i).toString(), currentDay, 0));
                }
            }
            for (int i = 0; i < dataManager.queryStepCountContentInfo(currentDay).size(); i++) {
                int currentcount = dataManager.queryStepCountContentInfo(currentDay).get(i).getCurrentcount();
                StepCount[i] = currentcount;
            }

        }
        return StepCount;
    }


    //获取指定日期计步
    public static int[] StepCountBeforeDb(String BeforeDay) {
        int StepCount[] = new int[24];
        List<StepCountContentInfo> stepCountContentInfos = dataManager.queryStepCountContentInfo(BeforeDay);
        if (stepCountContentInfos != null) {
            for (int i = 0; i < stepCountContentInfos.size(); i++) {
                int currentcount = stepCountContentInfos.get(i).getCurrentcount();
                StepCount[i] = currentcount;
            }
        } else {
            for (int i = 0; i < StepCount.length; i++) {
                StepCount[i] = 0;
            }
        }
        return StepCount;
    }

    //获取指定小时计步
    public static int StepCountHourDb() {
        int hourStepCount = 0;
        String currentDay = CalenderUtilsClass.getCurrentDay(false);
        StepCountContentInfo stepCountContentInfo = dataManager.queryStepCountCurrentTimeContentInfo(currentDay);
        if (stepCountContentInfo != null)
            hourStepCount = stepCountContentInfo.getCurrentcount();
        return hourStepCount;
    }

    //路程模拟数据
    public int[] PathLengthInitDb() {
        int StepCount[] = new int[24];
        String currentDay = CalenderUtilsClass.getCurrentDay(false);
        currentDay = "2018-5-28";
        for (int i = 0; i < 24; i++) {
            dataManager.insertPathLengthContentInfo(new PathLengthContentInfo(new StringBuffer().append(currentDay).append("-").append(i).toString(), currentDay, mDataLine[i]));
        }
        List<PathLengthContentInfo> pathLengthContentInfos = dataManager.queryPathLengthContentInfo(currentDay);
        for (int i = 0; i < pathLengthContentInfos.size(); i++) {
            int currentcount = pathLengthContentInfos.get(i).getCurrentLength();
            StepCount[i] = currentcount;

        }
        return StepCount;
    }

    //获取当天路程数据(插入/更新/初始化)                    //TODO 每日路程数据接入入口
    public int[] getPathLengthDb(int currentPathLength) {
        int StepCount[] = new int[24];
        String currentDay = CalenderUtilsClass.getCurrentDay(false);
        List<PathLengthContentInfo> pathLengthContentInfos = dataManager.queryPathLengthContentInfo(currentDay);
        if (pathLengthContentInfos != null && pathLengthContentInfos.size() > 0) {
            int currentlength = 0;
            for (int i = 0; i < pathLengthContentInfos.size(); i++) {
                if (CalenderUtilsClass.getCurrentHour() == i) {
                    if (pathLengthContentInfos.get(i).getCurrentLength() > 0) {
                        if (currentPathLength > 0) {
                            currentlength = currentPathLength + pathLengthContentInfos.get(i).getCurrentLength();
                        } else {
                            currentlength = pathLengthContentInfos.get(i).getCurrentLength();
                        }
                    } else {
                        currentlength = currentPathLength;
                    }
                    dataManager.UpDataPathLengthContentInfo(new PathLengthContentInfo(pathLengthContentInfos.get(i).getId(), pathLengthContentInfos.get(i).getCurrentTime(), pathLengthContentInfos.get(i).getData(), currentlength));
                } else {
                    currentlength = pathLengthContentInfos.get(i).getCurrentLength();
                }
                StepCount[i] = currentlength;
            }
        } else {
            for (int i = 0; i < 24; i++) {
                if (CalenderUtilsClass.getCurrentHour() == i) {
                    dataManager.insertPathLengthContentInfo(new PathLengthContentInfo(new StringBuffer().append(currentDay).append("-").append(i).toString(), currentDay, currentPathLength));
                } else {
                    dataManager.insertPathLengthContentInfo(new PathLengthContentInfo(new StringBuffer().append(currentDay).append("-").append(i).toString(), currentDay, 0));
                }
            }
            for (int i = 0; i < dataManager.queryPathLengthContentInfo(currentDay).size(); i++) {
                int currentlength = dataManager.queryPathLengthContentInfo(currentDay).get(i).getCurrentLength();
                StepCount[i] = currentlength;
            }
        }
        return StepCount;
    }

    //获取指定日期路程
    public static int[] PathLengthBeforeDb(String BeforeDay) {
        int StepCount[] = new int[24];
        List<PathLengthContentInfo> pathLengthContentInfos = dataManager.queryPathLengthContentInfo(BeforeDay);
        if (pathLengthContentInfos != null) {
            for (int i = 0; i < pathLengthContentInfos.size(); i++) {
                int currentlength = pathLengthContentInfos.get(i).getCurrentLength();
                StepCount[i] = currentlength;
            }
        } else {
            for (int i = 0; i < StepCount.length; i++) {
                StepCount[i] = 0;
            }
        }
        return StepCount;
    }

    //获取指定小时路程
    public static int PathLengthHourDb() {
        int hourPathLength = 0;
        String currentDay = CalenderUtilsClass.getCurrentDay(true);
        PathLengthContentInfo pathLengthContentInfo = dataManager.queryPathLengthCurrentTimeContentInfo(currentDay);
        if (pathLengthContentInfo != null)
            hourPathLength = pathLengthContentInfo.getCurrentLength();
        return hourPathLength;
    }

    //获取当前一周计步数据(插入/更新/初始化)
    public int[] getStepCountWeekDb() {
        int StepCount[] = new int[7];
        List<String> weekdays = CalenderUtilsClass.printWeekdays();
        String currentDay = CalenderUtilsClass.getCurrentDay(false);
        List<StepCountInfo> stepCountInfos = dataManager.queryCurrentWeekStepInfo(weekdays.get(0));
        String[] split = currentDay.split("-");
        if (stepCountInfos != null && stepCountInfos.size() > 0) {
            int currentcount = 0;
            for (int i = 0; i < stepCountInfos.size(); i++) {
                if (currentDay.equals(stepCountInfos.get(i).getData())) {
                    currentcount = DayAllStep(currentDay);
                    dataManager.UpDataStepCountInfo(new StepCountInfo(stepCountInfos.get(i).getId(), stepCountInfos.get(i).getData(), stepCountInfos.get(i).getWeekFirst(), split[1], currentcount));
                } else {
                    currentcount = stepCountInfos.get(i).getCount();
                }
                StepCount[i] = currentcount;
            }
        } else {
            for (int i = 0; i < weekdays.size(); i++) {
                if (currentDay.equals(weekdays.get(i))) {
                    dataManager.insertStepCountInfo(new StepCountInfo(currentDay, weekdays.get(0), split[1], DayAllStep(currentDay)));
                } else {
                    dataManager.insertStepCountInfo(new StepCountInfo(weekdays.get(i), weekdays.get(0), split[1], DayAllStep(weekdays.get(i))));
                }
            }
            for (int i = 0; i < dataManager.queryCurrentWeekStepInfo(weekdays.get(0)).size(); i++) {
                int currentcount = dataManager.queryCurrentWeekStepInfo(weekdays.get(0)).get(i).getCount();
                StepCount[i] = currentcount;
            }
        }
        return StepCount;
    }

    //获取指定一周计步
    public static int[] StepCountWeekBeforeDb(String BeforeWeek) {
        int StepWeekCount[] = new int[7];
        List<StepCountInfo> stepCountInfos = dataManager.queryCurrentWeekStepInfo(BeforeWeek);
        if (stepCountInfos != null) {
            for (int i = 0; i < stepCountInfos.size(); i++) {
                int currentcount = stepCountInfos.get(i).getCount();
                StepWeekCount[i] = currentcount;
            }
        } else {
            for (int i = 0; i < StepWeekCount.length; i++) {
                StepWeekCount[i] = 0;
            }
        }
        return StepWeekCount;
    }

    //获取当前一周内每一天的计步总数
    public static List<Integer> WeekAllStep() {
        List<String> weekdays = CalenderUtilsClass.printWeekdays();
        List<Integer> dayCountList = new ArrayList<>();
        int dayCount = 0;
        for (int i = 0; i < weekdays.size(); i++) {
            int[] ints = StepCountBeforeDb(weekdays.get(i));
            for (int j = 0; j < ints.length; j++) {
                dayCount = dayCount + ints[j];
            }
            dayCountList.add(dayCount);
        }
        return dayCountList;
    }

    //获取当天的计步总数
    public static Integer DayAllStep(String currentDay) {
        int dayCount = 0;
        int[] ints = StepCountBeforeDb(currentDay);
        for (int i = 0; i < ints.length; i++) {
            dayCount = dayCount + ints[i];
        }
        return dayCount;
    }

    //获取当前一周路程数据(插入/更新/初始化)
    public int[] getPathLengWeekDb() {
        int StepCount[] = new int[7];
        List<String> weekdays = CalenderUtilsClass.printWeekdays();
        String currentDay = CalenderUtilsClass.getCurrentDay(false);
        List<PathLengthInfo> pathLengthInfos = dataManager.queryCurrentWeekLengthInfo(weekdays.get(0));
        String[] split = currentDay.split("-");
        if (pathLengthInfos != null && pathLengthInfos.size() > 0) {
            int currentcount = 0;
            for (int i = 0; i < pathLengthInfos.size(); i++) {
                if (currentDay.equals(pathLengthInfos.get(i).getData())) {
                    currentcount = DayAllLength(currentDay);
                    dataManager.UpDataPathLengthInfo(new PathLengthInfo(pathLengthInfos.get(i).getId(), pathLengthInfos.get(i).getData(), pathLengthInfos.get(i).getWeekFirst(), split[1], currentcount));
                } else {
                    currentcount = pathLengthInfos.get(i).getLength();
                }
                StepCount[i] = currentcount;
            }
        } else {
            for (int i = 0; i < weekdays.size(); i++) {
                if (currentDay.equals(weekdays.get(i))) {
                    dataManager.insertPathLengthInfo(new PathLengthInfo(currentDay, weekdays.get(0), split[1], DayAllLength(currentDay)));
                } else {
                    dataManager.insertPathLengthInfo(new PathLengthInfo(weekdays.get(i), weekdays.get(0), split[1], DayAllLength(weekdays.get(i))));
                }
            }
            for (int i = 0; i < dataManager.queryCurrentWeekLengthInfo(weekdays.get(0)).size(); i++) {
                int currentcount = dataManager.queryCurrentWeekLengthInfo(weekdays.get(0)).get(i).getLength();
                StepCount[i] = currentcount;
            }
        }
        return StepCount;
    }

    //获取当天的路程总数
    public static Integer DayAllLength(String currentDay) {
        int dayCount = 0;
        int[] ints = PathLengthBeforeDb(currentDay);
        for (int i = 0; i < ints.length; i++) {
            dayCount = dayCount + ints[i];
        }
        return dayCount;
    }

    //获取指定一周路程
    public static int[] PathLengthWeekBeforeDb(String BeforeWeek) {
        int StepWeekCount[] = new int[7];
        List<PathLengthInfo> pathLengthInfos = dataManager.queryCurrentWeekLengthInfo(BeforeWeek);
        if (pathLengthInfos != null) {
            for (int i = 0; i < pathLengthInfos.size(); i++) {
                int currentcount = pathLengthInfos.get(i).getLength();
                StepWeekCount[i] = currentcount;
            }
        } else {
            for (int i = 0; i < StepWeekCount.length; i++) {
                StepWeekCount[i] = 0;
            }
        }
        return StepWeekCount;
    }

    //获取指定月份每日计步
    public int[] getStepCountMonthDb(int indexMonth) {
        List<String> dayListOfMonth = CalenderUtilsClass.getDayListOfMonth(indexMonth);
        int StepMonthCount[] = new int[dayListOfMonth.size()];
        for (int i = 0; i < dayListOfMonth.size(); i++) {
            int currentcount = 0;
            int[] ints = StepCountBeforeDb(dayListOfMonth.get(i));
            for (int j = 0; j < ints.length; j++) {
                currentcount = currentcount + ints[j];
            }
            StepMonthCount[i] = currentcount;
        }
        return StepMonthCount;
    }

    //获取指定月份每日路程
    public int[] PathgetLengthMonthDb(int indexMonth) {
        List<String> dayListOfMonth = CalenderUtilsClass.getDayListOfMonth(indexMonth);
        int StepMonthCount[] = new int[dayListOfMonth.size()];
        for (int i = 0; i < dayListOfMonth.size(); i++) {
            int currentcount = 0;
            int[] ints = PathLengthBeforeDb(dayListOfMonth.get(i));
            for (int j = 0; j < ints.length; j++) {
                currentcount = currentcount + ints[j];
            }
            StepMonthCount[i] = currentcount;
        }
        return StepMonthCount;
    }

    //获取指定日期时间段每日计步
    public int[] getStepCountMonthDb() {
        List<String> intervalDate = CalenderUtilsClass.getIntervalDate();
        int StepMonthCount[] = new int[intervalDate.size()];
        for (int i = 0; i < intervalDate.size(); i++) {
            int currentcount = 0;
            int[] ints = StepCountBeforeDb(intervalDate.get(i));
            for (int j = 0; j < ints.length; j++) {
                currentcount = currentcount + ints[j];
            }
            StepMonthCount[i] = currentcount;
        }
        return StepMonthCount;
    }


    //ecg模拟数据
    public static String dataSource = "[2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103,2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103,2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103,2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103,2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103,2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103,2071, 2086, 2099, 2109, 2117, 2124, 2130, 2134, 2136, 2138, 2139, 2141, 2143, 2145, 2147, 2148, 2148, 2148, 2147, 2145, 2141, 2134, 2125, 2116, 2107, 2098, 2088, 2078, 2067, 2058, 2049, 1997, 1991, 1991, 1997, 2058, 2168, 2221, 2221, 2144, 2003, 1937, 1937, 1954, 1970, 1972, 1972, 1972, 1984, 2005, 2019, 2020, 2020, 2019, 2019, 2021, 2025, 2028, 2032, 2036, 2041, 2048, 2057, 2066, 2074, 2081, 2089, 2097, 2105, 2113, 2122, 2132, 2143, 2154, 2164, 2174, 2184, 2190, 2190, 2181, 2166, 2146, 2125, 2103, 2082, 2062, 2046, 2036, 2030, 2027, 2025, 2024, 2022, 2019, 2017, 2014, 2012, 2012, 2014, 2016, 2019, 2021, 2026, 2031, 2037, 2041, 2044, 2045, 2047, 2048, 2048, 2047, 2046, 2044, 2043, 2041, 2040, 2039, 2038, 2037, 2037, 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2048, 2047, 2047, 2047, 2047, 2047, 2048, 2050, 2052, 2055, 2058, 2060, 2062, 2062, 2059, 2056, 2052, 2049, 2046, 2044, 2041, 2042, 2044, 2046, 2047, 2034, 2023, 2023, 2045, 2128, 2231, 2273, 2273, 2206, 2092, 2045, 2045, 2046, 2051, 2051, 2051, 2055, 2058, 2062, 2063, 2063, 2065, 2068, 2072, 2074, 2076, 2077, 2078, 2082, 2087, 2091, 2095, 2099, 2104, 2111, 2119, 2126, 2132, 2138, 2144, 2153, 2161, 2168, 2173, 2177, 2180, 2179, 2174, 2162, 2146, 2129, 2111, 2094, 2079, 2066, 2057, 2050, 2047, 2046, 2045, 2044, 2043, 2043, 2043, 2043, 2043, 2041, 2039, 2036, 2032, 2029, 2027, 2026, 2027, 2028, 2030, 2032, 2035, 2038, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2040, 2039, 2039, 2039, 2040, 2041, 2042, 2043, 2044, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2051, 2049, 2047, 2044, 2042, 2042, 2042, 2044, 2046, 2049, 2052, 2056, 2058, 2058, 2057, 2055, 2053, 2050, 2049, 2047, 2046, 2044, 2043, 2042, 2042, 2042, 2031, 2021, 2021, 2056, 2155, 2220, 2220, 2212, 2138, 2052, 2031, 2031, 2039, 2048, 2048, 2048, 2048, 2048, 2048, 2052, 2060, 2064, 2067, 2069, 2071, 2074, 2078, 2080, 2085, 2089, 2093, 2098, 2105, 2112, 2117, 2123, 2129, 2137, 2148, 2159, 2169, 2178, 2187, 2194, 2199, 2201, 2198, 2190, 2177, 2161, 2141, 2120, 2100, 2080, 2064, 2049, 2038, 2030, 2026, 2025, 2024, 2024, 2022, 2021, 2020, 2019, 2019, 2019, 2019, 2018, 2017, 2016, 2016, 2016, 2017, 2018, 2019, 2021, 2022, 2022, 2022, 2020, 2018, 2018, 2017, 2016, 2016, 2016, 2016, 2016, 2017, 2016, 2016, 2018, 2021, 2025, 2031, 2036, 2041, 2044, 2047, 2050, 2051, 2050, 2047, 2045, 2043, 2041, 2041, 2041, 2041, 2043, 2045, 2046, 2048, 2049, 2051, 2051, 2052, 2051, 2051, 2050, 2049, 2047, 2046, 2045, 2044, 2044, 2044, 2037, 2029, 2029, 2041, 2113, 2235, 2296, 2296, 2226, 2099, 2041, 2041, 2046, 2050, 2051, 2050, 2049, 2049, 2053, 2062, 2072, 2076, 2079, 2082, 2084, 2087, 2089, 2091, 2095, 2098, 2100, 2103, 2105, 2108, 2111, 2115, 2122, 2130, 2139, 2148, 2159, 2170, 2181, 2189, 2194, 2195, 2192, 2185, 2174, 2159, 2143, 2126, 2108, 2091, 2076, 2065, 2056, 2049, 2045, 2042, 2040, 2041, 2042, 2043, 2042, 2041, 2040, 2040, 2040, 2040, 2041, 2042, 2044, 2045, 2046, 2046, 2045, 2043, 2042, 2041, 2040, 2040, 2043, 2045, 2047, 2048, 2048, 2047, 2047, 2046, 2045, 2044, 2044, 2045, 2048, 2049, 2049, 2049, 2048, 2048, 2048, 2047, 2045, 2045, 2046, 2047, 2048, 2047, 2045, 2043, 2042, 2042, 2044, 2045, 2047, 2050, 2054, 2057, 2060, 2060, 2059, 2058, 2056, 2053, 2049, 2045, 2042, 2039, 2038, 2037, 2036, 2022, 2008, 2008, 2031, 2118, 2227, 2272, 2272, 2202, 2078, 2022, 2022, 2032, 2041, 2041, 2040, 2040, 2045, 2053, 2058, 2059, 2059, 2059, 2060, 2062, 2064, 2066, 2069, 2072, 2076, 2081, 2086, 2092, 2097, 2103, 2108, 2114, 2122, 2132, 2142, 2152, 2162, 2173, 2184, 2192, 2197, 2195, 2189, 2179, 2166, 2149, 2131, 2111, 2091, 2074, 2060, 2050, 2042, 2035, 2032, 2031, 2032, 2033, 2033, 2033, 2034, 2034, 2034, 2033, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2041, 2042, 2043, 2043, 2043, 2043, 2042, 2042, 2041, 2041, 2042, 2042, 2042, 2043, 2044, 2044, 2043, 2043, 2043, 2043, 2044, 2044, 2046, 2047, 2048, 2048, 2048, 2048, 2048, 2047, 2047, 2047, 2048, 2049, 2050, 2051, 2050, 2050, 2050, 2051, 2051, 2050, 2049, 2049, 2049, 2049, 2048, 2041, 2040, 2040, 2095, 2213, 2277, 2277, 2222, 2110, 2040, 2028, 2028, 2034, 2041, 2045, 2045, 2045, 2045, 2056, 2075, 2086, 2087, 2088, 2088, 2088, 2089, 2090, 2092, 2094, 2097, 2100, 2103, 2107, 2112, 2118, 2125, 2132, 2140, 2148, 2157, 2167, 2176, 2184, 2188, 2190, 2189, 2185, 2175, 2162, 2146, 2128, 2110, 2092, 2076, 2062, 2050, 2040, 2034, 2029, 2027, 2025, 2025, 2025, 2025, 2027, 2029, 2030, 2032, 2033, 2035, 2036, 2038, 2039, 2040, 2041, 2040, 2040, 2039, 2038, 2039, 2040, 2042, 2043, 2046, 2049, 2051, 2053, 2052, 2051, 2049, 2047, 2046, 2044, 2044, 2044, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2045, 2045, 2045, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2045, 2047, 2050, 2052, 2055, 2056, 2057, 2055, 2053, 2051, 2048, 2046, 2044, 2043, 2044, 2046, 2048, 2035, 2018, 2018, 2032, 2116, 2239, 2292, 2292, 2221, 2095, 2038, 2038, 2040, 2043, 2044, 2045, 2052, 2065, 2074, 2074, 2073, 2072, 2072, 2073, 2075, 2076, 2079, 2082, 2087, 2092, 2097, 2102, 2106, 2111, 2115, 2118, 2122, 2126, 2133, 2143, 2154, 2165, 2175, 2184, 2191, 2195, 2194, 2187, 2175, 2161, 2144, 2126, 2108, 2091, 2077, 2065, 2056, 2049, 2042, 2037, 2034, 2032, 2030, 2028, 2027, 2026, 2027, 2028, 2029, 2029, 2029, 2029, 2029, 2030, 2031, 2032, 2031, 2031, 2032, 2034, 2035, 2036, 2036, 2036, 2037, 2038, 2039, 2040, 2040, 2041, 2043, 2044, 2045, 2045, 2044, 2044, 2045, 2046, 2047, 2048, 2049, 2049, 2049, 2049, 2048, 2046, 2044, 2043, 2042, 2043, 2043, 2043, 2044, 2044, 2045, 2047, 2049, 2052, 2054, 2056, 2057, 2058, 2057, 2056, 2054, 2052, 2050, 2048, 2047, 2045, 2044, 2044, 2044, 2043, 2042, 2025, 2016, 2016, 2074, 2205, 2279, 2279, 2237, 2129, 2055, 2047, 2047, 2048, 2048, 2046, 2044, 2044, 2050, 2061, 2070, 2077, 2081, 2083, 2085, 2086, 2086, 2087, 2089, 2092, 2095, 2097, 2099, 2103]";

}
